package com.example.interfaces.dto;

import com.example.infrastructure.excel.ExcelExportable;
import com.example.infrastructure.excel.ExcelImportable;
import cn.idev.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import jakarta.validation.constraints.*;

/**
 * 用户实名认证表 DTO
 *
 * @author wangal
 * @since 2025-07-25
 */
@Data
@Schema(name = "UserAuthenticationsDTO", description = "用户实名认证表DTO")
public class UserAuthenticationsDTO implements ExcelExportable, ExcelImportable {

    @Schema(description = "用户ID")
    @ExcelProperty("用户ID")
    @NotNull(message = "用户ID不能为空")
    private Long userId;
    
    @Schema(description = "真实姓名")
    @ExcelProperty("真实姓名")
    @NotBlank(message = "真实姓名不能为空")
    private String realName;
    
    @Schema(description = "身份证号")
    @ExcelProperty("身份证号")
    @NotBlank(message = "身份证号不能为空")
    private String idCard;
    
    @Schema(description = "身份证正面照片")
    @ExcelProperty("身份证正面照片")
    @NotBlank(message = "身份证正面照片不能为空")
    private String idCardFront;
    
    @Schema(description = "身份证背面照片")
    @ExcelProperty("身份证背面照片")
    @NotBlank(message = "身份证背面照片不能为空")
    private String idCardBack;
    
    @Schema(description = "认证状态：0待审核，1已认证，2未通过")
    @ExcelProperty("认证状态：0待审核，1已认证，2未通过")
    private Byte authStatus;
    
    @Schema(description = "拒绝原因")
    @ExcelProperty("拒绝原因")
    @NotBlank(message = "拒绝原因不能为空")
    private String rejectReason;
    
    @Schema(description = "租户编号")
    @ExcelProperty("租户编号")
    @NotNull(message = "租户编号不能为空")
    private Long tenantId;
    
}
